package com.nxcy.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
@WebServlet(urlPatterns = {"/download/listFileServlet.do"})
public class ListFileServlet extends HttpServlet {
    String FilePath = "/Users/zhli/百度云同步盘/工作文档/重要文件/相关证件/";

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        //存储要下载的文件名
        Map<String, String> fileNameMap = new HashMap<String, String>();
        //递归遍历filepath目录下的所有文件和目录,将文件名存储到map集合中
        //File既可以代表一个文件也可以代表一个目录
        listfile(new File(FilePath), fileNameMap);
        //将Map集合发送到listfile.jsp页面显示
        request.setAttribute("fileNameMap", fileNameMap);
        request.getRequestDispatcher("listfile.jsp").forward(request, response);

    }

    /**
     * @Author: Ray
     * @Date: 2018/3/17 0017
     * @Description: 递归遍历指定目录下的所有文件和目录, 并将文件名存储到Map集合中
     * @Return:
     */
    public void listfile(File file, Map<String, String> map) {
        //如果file代表的不是一个文件,而是一个目录
        if (!file.isFile()) {
            //列出该目录下的所有文件和目录
            File[] files = file.listFiles();
            //遍历files[]数组
            for (File f : files) {
                //递归
                listfile(f, map);
            }
        } else {

            String fileOrgName = file.getName();
            if (!fileOrgName.startsWith(".")) {
                int index = fileOrgName.lastIndexOf(".");
                String fileName = fileOrgName.substring(0, index);
                System.out.println(file.getName());
                map.put(file.getAbsolutePath().replace(FilePath,""), fileName);
            }
        }
    }

}
